Complex Queries এবং Joins

Web Development - কোডইগনাইটার (Codeigniter) - CodeIgniter Database Interaction |

CodeIgniter এর Query Builder Class ডাটাবেসের সাথে কাজ করার একটি শক্তিশালী এবং সহজ উপায় প্রদান করে। এটি সহজ এবং জটিল উভয় ধরনের কোয়েরি সম্পাদন করতে পারে। JOIN অপারেশন ব্যবহার করে একাধিক টেবিল থেকে ডেটা রিট্রিভ করা যায়।


Query Builder ব্যবহার করে Complex Query

CodeIgniter এর Query Builder দিয়ে আপনি ডেটাবেসের বিভিন্ন কাজ যেমন সিলেক্ট, ইনসার্ট, আপডেট এবং ডিলিট করতে পারেন। নিচে কয়েকটি উদাহরণ দেওয়া হলো।

সাধারণ Query

$builder = $db->table('users');
$query = $builder->get(); // SELECT * FROM users

নির্দিষ্ট কলাম সিলেক্ট করা

$builder = $db->table('users');
$builder->select('name, email');
$query = $builder->get(); // SELECT name, email FROM users

WHERE কন্ডিশন

$builder = $db->table('users');
$builder->where('status', 'active');
$query = $builder->get(); // SELECT * FROM users WHERE status = 'active'

ORDER BY এবং LIMIT

$builder = $db->table('users');
$builder->orderBy('created_at', 'DESC')->limit(10);
$query = $builder->get(); // SELECT * FROM users ORDER BY created_at DESC LIMIT 10

JOIN ব্যবহার করা

JOIN ব্যবহার করে একাধিক টেবিল থেকে ডেটা রিট্রিভ করা হয়।

INNER JOIN

$builder = $db->table('orders');
$builder->select('orders.id, orders.amount, users.name');
$builder->join('users', 'users.id = orders.user_id');
$query = $builder->get();

জেনারেট করা SQL:

SELECT orders.id, orders.amount, users.name
FROM orders
INNER JOIN users ON users.id = orders.user_id

LEFT JOIN

$builder = $db->table('orders');
$builder->select('orders.id, orders.amount, users.name');
$builder->join('users', 'users.id = orders.user_id', 'left');
$query = $builder->get();

জেনারেট করা SQL:

SELECT orders.id, orders.amount, users.name
FROM orders
LEFT JOIN users ON users.id = orders.user_id

RIGHT JOIN

$builder = $db->table('orders');
$builder->select('orders.id, orders.amount, users.name');
$builder->join('users', 'users.id = orders.user_id', 'right');
$query = $builder->get();

জেনারেট করা SQL:

SELECT orders.id, orders.amount, users.name
FROM orders
RIGHT JOIN users ON users.id = orders.user_id

Complex Query উদাহরণ

Aggregate Functions (SUM, COUNT, AVG)

$builder = $db->table('orders');
$builder->select('SUM(amount) as total_sales');
$query = $builder->get();

জেনারেট করা SQL:

SELECT SUM(amount) as total_sales FROM orders

Multiple Joins

$builder = $db->table('orders');
$builder->select('orders.id, orders.amount, users.name, products.title');
$builder->join('users', 'users.id = orders.user_id');
$builder->join('products', 'products.id = orders.product_id');
$query = $builder->get();

জেনারেট করা SQL:

SELECT orders.id, orders.amount, users.name, products.title
FROM orders
INNER JOIN users ON users.id = orders.user_id
INNER JOIN products ON products.id = orders.product_id

Subqueries

Subquery ব্যবহার

$subquery = $db->table('orders')->select('SUM(amount)')->where('user_id = users.id');
$builder = $db->table('users');
$builder->select('users.name, (' . $subquery . ') as total_spent');
$query = $builder->get();

জেনারেট করা SQL:

SELECT users.name, (SELECT SUM(amount) FROM orders WHERE user_id = users.id) as total_spent
FROM users

Group By এবং Having

Group By

$builder = $db->table('orders');
$builder->select('user_id, COUNT(id) as total_orders');
$builder->groupBy('user_id');
$query = $builder->get();

জেনারেট করা SQL:

SELECT user_id, COUNT(id) as total_orders
FROM orders
GROUP BY user_id

Having

$builder = $db->table('orders');
$builder->select('user_id, COUNT(id) as total_orders');
$builder->groupBy('user_id');
$builder->having('total_orders >', 5);
$query = $builder->get();

জেনারেট করা SQL:

SELECT user_id, COUNT(id) as total_orders
FROM orders
GROUP BY user_id
HAVING total_orders > 5

Raw SQL ব্যবহার

কখনো কখনো Query Builder ব্যবহার না করে সরাসরি Raw SQL কোড চালাতে হয়।

Raw Query চালানো

$query = $db->query("SELECT * FROM users WHERE status = 'active'");
$result = $query->getResult();

সেরা প্র্যাকটিস

  1. Query Builder ব্যবহার করুন: যতটা সম্ভব Query Builder ব্যবহার করুন, কারণ এটি সহজ এবং নিরাপদ।
  2. SQL ইনজেকশন রোধ করুন: Raw SQL ব্যবহার করার সময় ইনপুট স্যানিটাইজ করুন।
  3. Efficient Joins লিখুন: JOIN ব্যবহার করার সময় অপ্রয়োজনীয় কলাম নির্বাচন এড়িয়ে চলুন।
  4. Indexes নিশ্চিত করুন: ডাটাবেস টেবিলের ওপর সঠিক ইনডেক্স থাকলে Query Performance উন্নত হয়।

CodeIgniter এর Query Builder ব্যবহার করে Complex Query এবং JOIN পরিচালনা সহজ এবং কার্যকর। এর সাহায্যে আপনি ডাটাবেসের বিভিন্ন অপারেশন দ্রুত এবং নিরাপদে সম্পন্ন করতে পারবেন।

Content added By
Promotion